1. 使用HttpClient與第三方API通信
ASP.NET Core內建的HttpClient
是一個強大的工具,用來發送HTTP請求並處理來自第三方API的回應。首先,我們需要在應用中注入HttpClient
,可以在Startup.cs
中進行如下配置:
public void ConfigureServices(IServiceCollection services)
{
services.AddHttpClient();
services.AddControllers();
}
接著,我們可以在控制器中使用HttpClient來發送請求。例如,假設我們要調用一個地圖API來獲取地理數據:
public class MapController : ControllerBase
{
private readonly HttpClient _httpClient;
public MapController(HttpClient httpClient)
{
_httpClient = httpClient;
}
[HttpGet("location")]
public async Task<IActionResult> GetLocationData(string address)
{
var apiUrl = $"https://api.example.com/location?address={address}";
var response = await _httpClient.GetAsync(apiUrl);
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsStringAsync();
return Ok(data);
}
return StatusCode((int)response.StatusCode, "Failed to fetch location data");
}
}
在這個例子中,HttpClient被用來發送一個GET請求至外部的地圖API,並將結果返回給用戶。
2. 處理API憑證與身份驗證
大多數第三方API都需要身份驗證,通常是通過API Key或OAuth等機制。我們可以通過添加標頭來發送API Key,例如:
[HttpGet("weather")]
public async Task<IActionResult> GetWeatherData(string city)
{
var apiKey = "your_api_key_here";
var apiUrl = $"https://api.weather.com/v3/weather?city={city}&key={apiKey}";
var request = new HttpRequestMessage(HttpMethod.Get, apiUrl);
request.Headers.Add("Authorization", $"Bearer {apiKey}");
var response = await _httpClient.SendAsync(request);
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsStringAsync();
return Ok(data);
}
return StatusCode((int)response.StatusCode, "Failed to fetch weather data");
}
這樣可以確保API請求攜帶必要的憑證信息,從而進行授權訪問。
3. 處理API回應與錯誤
與第三方API交互時,處理可能的錯誤情況至關重要。我們可以檢查API的回應狀態碼,並根據不同的錯誤碼返回合適的錯誤訊息:
if (response.IsSuccessStatusCode)
{
var data = await response.Content.ReadAsStringAsync();
return Ok(data);
}
else if (response.StatusCode == HttpStatusCode.Unauthorized)
{
return Unauthorized("API key is invalid or expired.");
}
else if (response.StatusCode == HttpStatusCode.BadRequest)
{
return BadRequest("Invalid request to the API.");
}
else
{
return StatusCode((int)response.StatusCode, "An error occurred while calling the API.");
}
這樣的錯誤處理方式可以提高應用的穩定性和用戶體驗。
4. 小結
整合第三方服務與API是現代應用開發中的常見需求。透過ASP.NET Core中的HttpClient,我們可以輕鬆地與外部API進行通信,並處理身份驗證與錯誤回應。靈活運用這些技術,可以讓應用更具擴展性和功能性。